Control block buffer size for performance #776
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Block buffer size has historically been 2. This limits the parallelization of scan and decoding. This change introduces the setting BlockBufferSize (defaults to 2). Users can increase this at the expense of memory in return for speedups on read e.g.
takes
increasing to
clickhouse.WithBlockBufferSize(100)
.gives
We leave users to tune as blocks can be variable size due to strings.
Can be set on the connection level with
BlockBufferSize
or via dsn withblock_buffer_size
or via specific query as shown above.